package com.zmn.plat.dubbo.interfaces.push;

import javax.validation.Valid;
import javax.validation.constraints.NotNull;

import com.zmn.common.dto2.ResponseDTO;
import com.zmn.plat.dubbo.dto.sendtemplate.SendSmsDIO;

import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;

/**
 * 描述：zmn 通知信息发送接口类
 *
 * @author wangjie
 * @since 2020/6/22 9:55
 **/
@Api(value = "zmn通知信息发送服务", tags = {"通知"})
public interface ZmnSmsRemoteService {
    /**
     * 描述：替代com.zmn.plat.dubbo.interfaces.push.ZmnSmsRemoteService#sendZmnSmsInfo(com.zmn.plat.dubbo.dto.push.ZmnSmsDIO) dubbo 提供发送信息服务
     * 发送微信消息：token(必传) weChatAppId（必传）
     * groupId(必传)，openId（必传），WeChatSmsDIO（必传），cityId（非必传），channelId（非必传），url（非必传），appletsAppId（非必传），pagePath（非必传）
     * 发送微信消息，会根据城市和渠道取对应的模板，如果城市和渠道没有传或者没有配置模板，则发送通用模板 其中WeChartSmsDIO 属性：first和remark必须有 keyword 为有序集合
     * <p>
     * 发送创蓝短信 groupId(必传)， params(必传)，cityId（非必传），channelId（非必传） 其中params 格式 "15800000000,张先生,1234;13800000000,李小姐,4321"
     * 第一个为固定为手机号码，后面接参数如果群发，多条之间用英文分号隔开
     * <p>
     * 发送阿里短息 groupId(必传)，mobile(必传)，jsonObject(必传)，cityId（非必传），channelId（非必传） 其中jsonObject 格式 paramname1：{{paramnvalue1}}
     * paramname2：{{paramnvalue2}} paramname3：{{paramnvalue3}}...
     *
     * @param sendSmsDio
     *            发送信息入参
     * @return com.zmn.common.dto2.ResponseDTO<java.lang.Boolean>
     * @author wangjie
     * @since 2020/6/19 11:59
     **/
    @ApiOperation(value = "发送信息", response = ResponseDTO.class, notes = "", tags = {"通知"})
    ResponseDTO<Boolean> sendSmsInfo(@NotNull(message = "入参不能为空") @Valid @ApiParam(value = "入参", required = true) SendSmsDIO sendSmsDio);
}
